home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / editors / pur_c_vi.zoo / hexchars.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-11  |  7.0 KB  |  338 lines

  1. /*
  2.  * STevie - ST editor for VI enthusiasts.    ...Tim Thompson...twitch!tjt...
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include "stevie.h"
  7.  
  8. /*
  9.  * This stuff is used to provide readable interpretations of unprintable
  10.  * characters.  The 'xxx' in each is replaced with either hex, octal, or
  11.  * decimal numbers, depending on what command-line argument is given.
  12.  */
  13.  
  14. struct charinfo chars[] = {
  15.     /* 000 */    5, "[xxx]",
  16.     /* 001 */    5, "[xxx]",
  17.     /* 002 */    5, "[xxx]",
  18.     /* 003 */    5, "[xxx]",
  19.     /* 004 */    5, "[xxx]",
  20.     /* 005 */    5, "[xxx]",
  21.     /* 006 */    5, "[xxx]",
  22.     /* 007 */    5, "[xxx]",
  23.     /* 010 */    5, "[xxx]",
  24.     /* 011 */    5, "[xxx]",
  25.     /* 012 */    1, NULL,
  26.     /* 013 */    5, "[xxx]",
  27.     /* 014 */    5, "[xxx]",
  28.     /* 015 */    5, "[xxx]",
  29.     /* 016 */    5, "[xxx]",
  30.     /* 017 */    5, "[xxx]",
  31.     /* 020 */    5, "[xxx]",
  32.     /* 021 */    5, "[xxx]",
  33.     /* 022 */    5, "[xxx]",
  34.     /* 023 */    5, "[xxx]",
  35.     /* 024 */    5, "[xxx]",
  36.     /* 025 */    5, "[xxx]",
  37.     /* 026 */    5, "[xxx]",
  38.     /* 027 */    5, "[xxx]",
  39.     /* 030 */    5, "[xxx]",
  40.     /* 031 */    5, "[xxx]",
  41.     /* 032 */    5, "[xxx]",
  42.     /* 033 */    5, "[xxx]",
  43.     /* 034 */    5, "[xxx]",
  44.     /* 035 */    5, "[xxx]",
  45.     /* 036 */    5, "[xxx]",
  46.     /* 037 */    5, "[xxx]",
  47.     /* 040 */    1, NULL,
  48.     /* 041 */    1, NULL,
  49.     /* 042 */    1, NULL,
  50.     /* 043 */    1, NULL,
  51.     /* 044 */    1, NULL,
  52.     /* 045 */    1, NULL,
  53.     /* 046 */    1, NULL,
  54.     /* 047 */    1, NULL,
  55.     /* 050 */    1, NULL,
  56.     /* 051 */    1, NULL,
  57.     /* 052 */    1, NULL,
  58.     /* 053 */    1, NULL,
  59.     /* 054 */    1, NULL,
  60.     /* 055 */    1, NULL,
  61.     /* 056 */    1, NULL,
  62.     /* 057 */    1, NULL,
  63.     /* 060 */    1, NULL,
  64.     /* 061 */    1, NULL,
  65.     /* 062 */    1, NULL,
  66.     /* 063 */    1, NULL,
  67.     /* 064 */    1, NULL,
  68.     /* 065 */    1, NULL,
  69.     /* 066 */    1, NULL,
  70.     /* 067 */    1, NULL,
  71.     /* 070 */    1, NULL,
  72.     /* 071 */    1, NULL,
  73.     /* 072 */    1, NULL,
  74.     /* 073 */    1, NULL,
  75.     /* 074 */    1, NULL,
  76.     /* 075 */    1, NULL,
  77.     /* 076 */    1, NULL,
  78.     /* 077 */    1, NULL,
  79.     /* 100 */    1, NULL,
  80.     /* 101 */    1, NULL,
  81.     /* 102 */    1, NULL,
  82.     /* 103 */    1, NULL,
  83.     /* 104 */    1, NULL,
  84.     /* 105 */    1, NULL,
  85.     /* 106 */    1, NULL,
  86.     /* 107 */    1, NULL,
  87.     /* 110 */    1, NULL,
  88.     /* 111 */    1, NULL,
  89.     /* 112 */    1, NULL,
  90.     /* 113 */    1, NULL,
  91.     /* 114 */    1, NULL,
  92.     /* 115 */    1, NULL,
  93.     /* 116 */    1, NULL,
  94.     /* 117 */    1, NULL,
  95.     /* 120 */    1, NULL,
  96.     /* 121 */    1, NULL,
  97.     /* 122 */    1, NULL,
  98.     /* 123 */    1, NULL,
  99.     /* 124 */    1, NULL,
  100.     /* 125 */    1, NULL,
  101.     /* 126 */    1, NULL,
  102.     /* 127 */    1, NULL,
  103.     /* 130 */    1, NULL,
  104.     /* 131 */    1, NULL,
  105.     /* 132 */    1, NULL,
  106.     /* 133 */    1, NULL,
  107.     /* 134 */    1, NULL,
  108.     /* 135 */    1, NULL,
  109.     /* 136 */    1, NULL,
  110.     /* 137 */    1, NULL,
  111.     /* 140 */    1, NULL,
  112.     /* 141 */    1, NULL,
  113.     /* 142 */    1, NULL,
  114.     /* 143 */    1, NULL,
  115.     /* 144 */    1, NULL,
  116.     /* 145 */    1, NULL,
  117.     /* 146 */    1, NULL,
  118.     /* 147 */    1, NULL,
  119.     /* 150 */    1, NULL,
  120.     /* 151 */    1, NULL,
  121.     /* 152 */    1, NULL,
  122.     /* 153 */    1, NULL,
  123.     /* 154 */    1, NULL,
  124.     /* 155 */    1, NULL,
  125.     /* 156 */    1, NULL,
  126.     /* 157 */    1, NULL,
  127.     /* 160 */    1, NULL,
  128.     /* 161 */    1, NULL,
  129.     /* 162 */    1, NULL,
  130.     /* 163 */    1, NULL,
  131.     /* 164 */    1, NULL,
  132.     /* 165 */    1, NULL,
  133.     /* 166 */    1, NULL,
  134.     /* 167 */    1, NULL,
  135.     /* 170 */    1, NULL,
  136.     /* 171 */    1, NULL,
  137.     /* 172 */    1, NULL,
  138.     /* 173 */    1, NULL,
  139.     /* 174 */    1, NULL,
  140.     /* 175 */    1, NULL,
  141.     /* 176 */    1, NULL,
  142.     /* 177 */    5, "[xxx]",
  143.     /* 200 */    5, "[xxx]",
  144.     /* 201 */    5, "[xxx]",
  145.     /* 202 */    5, "[xxx]",
  146.     /* 203 */    5, "[xxx]",
  147.     /* 204 */    5, "[xxx]",
  148.     /* 205 */    5, "[xxx]",
  149.     /* 206 */    5, "[xxx]",
  150.     /* 207 */    5, "[xxx]",
  151.     /* 210 */    5, "[xxx]",
  152.     /* 211 */    5, "[xxx]",
  153.     /* 212 */    5, "[xxx]",
  154.     /* 213 */    5, "[xxx]",
  155.     /* 214 */    5, "[xxx]",
  156.     /* 215 */    5, "[xxx]",
  157.     /* 216 */    5, "[xxx]",
  158.     /* 217 */    5, "[xxx]",
  159.     /* 220 */    5, "[xxx]",
  160.     /* 221 */    5, "[xxx]",
  161.     /* 222 */    5, "[xxx]",
  162.     /* 223 */    5, "[xxx]",
  163.     /* 224 */    5, "[xxx]",
  164.     /* 225 */    5, "[xxx]",
  165.     /* 226 */    5, "[xxx]",
  166.     /* 227 */    5, "[xxx]",
  167.     /* 230 */    5, "[xxx]",
  168.     /* 231 */    5, "[xxx]",
  169.     /* 232 */    5, "[xxx]",
  170.     /* 233 */    5, "[xxx]",
  171.     /* 234 */    5, "[xxx]",
  172.     /* 235 */    5, "[xxx]",
  173.     /* 236 */    5, "[xxx]",
  174.     /* 237 */    5, "[xxx]",
  175.     /* 240 */    5, "[xxx]",
  176.     /* 241 */    5, "[xxx]",
  177.     /* 242 */    5, "[xxx]",
  178.     /* 243 */    5, "[xxx]",
  179.     /* 244 */    5, "[xxx]",
  180.     /* 245 */    5, "[xxx]",
  181.     /* 246 */    5, "[xxx]",
  182.     /* 247 */    5, "[xxx]",
  183.     /* 250 */    5, "[xxx]",
  184.     /* 251 */    5, "[xxx]",
  185.     /* 252 */    5, "[xxx]",
  186.     /* 253 */    5, "[xxx]",
  187.     /* 254 */    5, "[xxx]",
  188.     /* 255 */    5, "[xxx]",
  189.     /* 256 */    5, "[xxx]",
  190.     /* 257 */    5, "[xxx]",
  191.     /* 260 */    5, "[xxx]",
  192.     /* 261 */    5, "[xxx]",
  193.     /* 262 */    5, "[xxx]",
  194.     /* 263 */    5, "[xxx]",
  195.     /* 264 */    5, "[xxx]",
  196.     /* 265 */    5, "[xxx]",
  197.     /* 266 */    5, "[xxx]",
  198.     /* 267 */    5, "[xxx]",
  199.     /* 270 */    5, "[xxx]",
  200.     /* 271 */    5, "[xxx]",
  201.     /* 272 */    5, "[xxx]",
  202.     /* 273 */    5, "[xxx]",
  203.     /* 274 */    5, "[xxx]",
  204.     /* 275 */    5, "[xxx]",
  205.     /* 276 */    5, "[xxx]",
  206.     /* 277 */    5, "[xxx]",
  207.     /* 300 */    5, "[xxx]",
  208.     /* 301 */    5, "[xxx]",
  209.     /* 302 */    5, "[xxx]",
  210.     /* 303 */    5, "[xxx]",
  211.     /* 304 */    5, "[xxx]",
  212.     /* 305 */    5, "[xxx]",
  213.     /* 306 */    5, "[xxx]",
  214.     /* 307 */    5, "[xxx]",
  215.     /* 310 */    5, "[xxx]",
  216.     /* 311 */    5, "[xxx]",
  217.     /* 312 */    5, "[xxx]",
  218.     /* 313 */    5, "[xxx]",
  219.     /* 314 */    5, "[xxx]",
  220.     /* 315 */    5, "[xxx]",
  221.     /* 316 */    5, "[xxx]",
  222.     /* 317 */    5, "[xxx]",
  223.     /* 320 */    5, "[xxx]",
  224.     /* 321 */    5, "[xxx]",
  225.     /* 322 */    5, "[xxx]",
  226.     /* 323 */    5, "[xxx]",
  227.     /* 324 */    5, "[xxx]",
  228.     /* 325 */    5, "[xxx]",
  229.     /* 326 */    5, "[xxx]",
  230.     /* 327 */    5, "[xxx]",
  231.     /* 330 */    5, "[xxx]",
  232.     /* 331 */    5, "[xxx]",
  233.     /* 332 */    5, "[xxx]",
  234.     /* 333 */    5, "[xxx]",
  235.     /* 334 */    5, "[xxx]",
  236.     /* 335 */    5, "[xxx]",
  237.     /* 336 */    5, "[xxx]",
  238.     /* 337 */    5, "[xxx]",
  239.     /* 340 */    5, "[xxx]",
  240.     /* 341 */    5, "[xxx]",
  241.     /* 342 */    5, "[xxx]",
  242.     /* 343 */    5, "[xxx]",
  243.     /* 344 */    5, "[xxx]",
  244.     /* 345 */    5, "[xxx]",
  245.     /* 346 */    5, "[xxx]",
  246.     /* 347 */    5, "[xxx]",
  247.     /* 350 */    5, "[xxx]",
  248.     /* 351 */    5, "[xxx]",
  249.     /* 352 */    5, "[xxx]",
  250.     /* 353 */    5, "[xxx]",
  251.     /* 354 */    5, "[xxx]",
  252.     /* 355 */    5, "[xxx]",
  253.     /* 356 */    5, "[xxx]",
  254.     /* 357 */    5, "[xxx]",
  255.     /* 360 */    5, "[xxx]",
  256.     /* 361 */    5, "[xxx]",
  257.     /* 362 */    5, "[xxx]",
  258.     /* 363 */    5, "[xxx]",
  259.     /* 364 */    5, "[xxx]",
  260.     /* 365 */    5, "[xxx]",
  261.     /* 366 */    5, "[xxx]",
  262.     /* 367 */    5, "[xxx]",
  263.     /* 370 */    5, "[xxx]",
  264.     /* 371 */    5, "[xxx]",
  265.     /* 372 */    5, "[xxx]",
  266.     /* 373 */    5, "[xxx]",
  267.     /* 374 */    5, "[xxx]",
  268.     /* 375 */    5, "[xxx]",
  269.     /* 376 */    5, "[xxx]",
  270.     /* 377 */    5, "[xxx]",
  271. };
  272.  
  273. /*
  274.  * octchars()
  275.  *
  276.  * Convert the charinfo strings to octal.
  277.  */
  278. octchars()
  279. {
  280.     char *p;
  281.     int n;
  282.  
  283.     for ( n=0; n<256; n++ ) {
  284.         p = chars[n].ch_str;
  285.         if ( p==NULL || *p != '[' )
  286.             continue;
  287.         sprintf(++p,"%03o]",n);
  288.     }
  289. }
  290.  
  291. /*
  292.  * hexchars()
  293.  *
  294.  * Convert the charinfo strings to hex.
  295.  */
  296. hexchars()
  297. {
  298.     char *p;
  299.     int n;
  300.  
  301.     for ( n=0; n<256; n++ ) {
  302.         p = chars[n].ch_str;
  303.         if ( p==NULL || *p != '[' )
  304.             continue;
  305.         sprintf(++p,"x%02X]",n);
  306.     }
  307. }
  308.  
  309. /*
  310.  * decchars()
  311.  *
  312.  * Convert the charinfo strings to decimal.
  313.  */
  314. decchars()
  315. {
  316.     char *p;
  317.     int n;
  318.  
  319.     for ( n=0; n<256; n++ ) {
  320.         p = chars[n].ch_str;
  321.         if ( p==NULL || *p != '[' )
  322.             continue;
  323.         sprintf(++p,"%3d]",n);
  324.     }
  325. }
  326.  
  327. hextoint(c)
  328. int c;
  329. {
  330.     if ( c>='0' && c<='9' )
  331.         return(c-'0');
  332.     if ( c>='a' && c<='f' )
  333.         return(10+c-'a');
  334.     if ( c>='A' && c<='F' )
  335.         return(10+c-'A');
  336.     return(-1);
  337. }
  338.